package GUI;

import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.ImageIcon;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;

import paquete.*;




import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ventanaAgregarPersona extends JInternalFrame  // Clase que crea una ventana para agregar una persona
{
	private static ventanaAgregarPersona miVentanaAgregarPersona; 
	private JTextField nombretxt;               //
	private JTextField primerApellidotxt;		//
	private JTextField segundoApellidotxt;		//  Atributos para crear cajas de texto
	private JTextField puestoCarneParentesco;	//
	private JTextField telefonotxt;		        //
	private JTextField correotxt;		        //
	private JComboBox comboBox;// Atributo que crea una caja con opciones (utilizado para escojer si es estudiante, colega o familiar)
	private JPanel panel;   //
	private JPanel panel_1; // Paneles para cambiar la opcion de puesto, parentesco o carne 
	private JPanel panel_2; //
	private JPanel panel_3; //
	
	public static ventanaAgregarPersona getInstance()  // Get que llama a la ventana agregar persona
	{
		if(miVentanaAgregarPersona == null)
		{
			miVentanaAgregarPersona = new ventanaAgregarPersona();
		}
		return miVentanaAgregarPersona;
	}
	
	private ventanaAgregarPersona() // Define los valores y componentes que va tener la ventana
	{
		getContentPane().setBackground(new Color(200, 200, 200)); // Color de la ventana
		setTitle("Agregar Persona"); // t�tulo de la ventana
		setFrameIcon(new ImageIcon(ventanaAgregarPersona.class.getResource("/Imayarc/Imagenes/logo.png"))); // icono de la ventana
		setIconifiable(true); // Para minimizar
		setBounds(140, 130, 650, 200); // Ubicacion y Tama�o de la ventana
		getContentPane().setLayout(null); //Se usa para establecer el gestor de posicionamiento en un contenedor
		
		
		// Crea un Label que diga Nombre 
		JLabel nombre = new JLabel("Nombre"); 
		nombre.setBounds(12, 15, 49, 15);
		getContentPane().add(nombre); 
		
		nombretxt = new JTextField();
		nombretxt.setBounds(66, 11, 100, 20);
		getContentPane().add(nombretxt);
		nombretxt.setColumns(10);
		
		// Crea un Label que diga Primer Apellido
		JLabel primerApellido = new JLabel("Primer Apellido");
		primerApellido.setBounds(178, 15, 105, 15);
		getContentPane().add(primerApellido);
		
		primerApellidotxt = new JTextField();
		primerApellidotxt.setBounds(266, 11, 105, 20);
		getContentPane().add(primerApellidotxt);
		primerApellidotxt.setColumns(10);
		
		//  Crea un Label que diga Segundo Apellido
		JLabel segundoApellido = new JLabel("Segundo Apellido");
		segundoApellido.setBounds(380, 15, 105, 15);
		getContentPane().add(segundoApellido);
		
		segundoApellidotxt = new JTextField();
		segundoApellidotxt.setBounds(487, 11, 111, 20);
		getContentPane().add(segundoApellidotxt);
		segundoApellidotxt.setColumns(10);
		
		
		puestoCarneParentesco = new JTextField();
		puestoCarneParentesco.setBounds(76, 66, 100, 20);
		getContentPane().add(puestoCarneParentesco);
		puestoCarneParentesco.setColumns(10);
		
		//  Crea un Label que diga telefono
		JLabel telefono = new JLabel("Tel�fono");
		telefono.setBounds(200, 69, 66, 14);
		getContentPane().add(telefono);
		
		telefonotxt = new JTextField();
		telefonotxt.setBounds(266, 66, 105, 20);
		getContentPane().add(telefonotxt);
		telefonotxt.setColumns(10);
		
	//  Crea un Label que diga el formato del telefono
		JLabel formatotelefono = new JLabel("Ej:XXXX-XX-XX");
		formatotelefono.setBounds(265, 89, 99, 14);
		getContentPane().add(formatotelefono);
		
		// Crea un Label que diga Correo
		JLabel correo = new JLabel("Correo");
		correo.setBounds(400, 70, 45, 15);
		getContentPane().add(correo);	
		
		correotxt = new JTextField();
		correotxt.setBounds(487, 66, 111, 20);
		getContentPane().add(correotxt);
		correotxt.setColumns(10);
		
		// Crea un Label que diga el formato del Correo
		JLabel formatocorreo = new JLabel("persona@servicio.com");
		formatocorreo.setBounds(487, 89, 139, 15);
		getContentPane().add(formatocorreo);
		
		// Crea un Label que diga Categoria
		JLabel categoria = new JLabel("Categoria");
		categoria.setBounds(10, 126, 71, 14);
		getContentPane().add(categoria);
		
		// Crea un objeto que va ser una caja con opciones de colega, familiar o estudiante
		comboBox = new JComboBox(); 
		comboBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				cambiarcombobox();
			}
		});
		// Caja para escoger si la persona es colega, familiar o estudiante
		comboBox.setModel(new DefaultComboBoxModel(new String[] {"Colega", "Familiar", "Estudiante"}));
		comboBox.setMaximumRowCount(3); // Maximo de filas
		comboBox.setBounds(65, 125, 155, 20); 
		getContentPane().add(comboBox);
		
		// Panel que contiene el label puesto
		panel = new JPanel();
		panel.setBackground(new Color(200, 200, 200));
		panel.setBounds(15, 70, 55, 20);
		getContentPane().add(panel);
		panel.setLayout(null);
		
		JLabel puesto = new JLabel("Puesto:");
		puesto.setBounds(0, 0, 49, 15);
		panel.add(puesto);
		panel.setVisible(false);
		
		// Panel que contiene el label parentesco
		panel_1 = new JPanel();
		panel_1.setBackground(new Color(200, 200, 200));
		panel_1.setBounds(2, 70, 71, 15);
		getContentPane().add(panel_1);
		panel_1.setLayout(null);
		
		JLabel parentesco = new JLabel("Parentesco:");
		parentesco.setBounds(0, 0, 71, 15);
		panel_1.add(parentesco);
		panel_1.setVisible(false);
		
		//Panel que contiene el label carn�
		panel_2 = new JPanel();
		panel_2.setBackground(new Color(200, 200, 200));
		panel_2.setBounds(15, 70, 49, 15);
		getContentPane().add(panel_2);
		panel_2.setLayout(null);
		
		JLabel carne = new JLabel("Carn�:");
		carne.setBounds(0, 0, 49, 15);
		panel_2.add(carne);
		panel_2.setVisible(false);
		
		panel_3 = new JPanel();
		panel_3.setBackground(new Color(200, 200, 200));
		panel_3.setBounds(76, 85, 100, 20);
		getContentPane().add(panel_3);
		panel_3.setLayout(null);
		
		JLabel formatocarne = new JLabel("Ej: 2014061689");
		formatocarne.setBounds(0,0, 100, 20);
		panel_3.add(formatocarne);
		panel_3.setVisible(false);
		
		setVisible(false);
		comboBox.setSelectedIndex(0);
		
		
		// Boton aceptar que valida que todo este lleno 
		JButton aceptar = new JButton("Aceptar");
		aceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				if(!nombretxt.getText().isEmpty() && !primerApellidotxt.getText().isEmpty() &&
				   !segundoApellidotxt.getText().isEmpty() && !puestoCarneParentesco.getText().isEmpty() &&
				   !telefonotxt.getText().isEmpty() && !correotxt.getText().isEmpty())
				{
					// Mandar esto al arreglo de personas
					/*
					 *  Agrega la persona y discrimina si es colega, familiar o estudiante
					 *  Luego resetea los valores de las cajas a un espacio blanco.
					 */
					
					if(comboBox.getSelectedItem().toString().compareTo("Colega")==0){
						Generales.agregarColega(
								new Colega(nombretxt.getText(),primerApellidotxt.getText(),segundoApellidotxt.getText(),
										telefonotxt.getText(),correotxt.getText(),puestoCarneParentesco.getText()));
					};
					if(comboBox.getSelectedItem().toString().compareTo("Familiar")==0){
						Generales.agregarFamiliar(
								new Familia(nombretxt.getText(),primerApellidotxt.getText(),segundoApellidotxt.getText(),
										telefonotxt.getText(),correotxt.getText(),puestoCarneParentesco.getText()));
					};
					if(comboBox.getSelectedItem().toString().compareTo("Estudiante")==0){
						Generales.agregarEstudiante(
								new Estudiante(nombretxt.getText(),primerApellidotxt.getText(),segundoApellidotxt.getText(),
										telefonotxt.getText(),correotxt.getText(),puestoCarneParentesco.getText()));
					};

					
					nombretxt.setText("");
					primerApellidotxt.setText("");
					segundoApellidotxt.setText("");
					puestoCarneParentesco.setText("");
					telefonotxt.setText("");
					correotxt.setText("");
					setVisible(false);
					JOptionPane.showMessageDialog(null, "Se ha agregado esta persona con exito");
				}
				else
				{
					JOptionPane.showMessageDialog(null, "Debe llenar todos los campos del formulario");
				}
			}
		});
		aceptar.setBounds(285, 125, 90, 25);
		getContentPane().add(aceptar);
		
		// Boton que sale de la ventana
		JButton cancelar = new JButton("Cancelar");
		cancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				nombretxt.setText("");
				primerApellidotxt.setText("");
				segundoApellidotxt.setText("");
				puestoCarneParentesco.setText("");
				telefonotxt.setText("");
				correotxt.setText("");
				setVisible(false);
			}
		});
		cancelar.setBounds(485, 125, 90, 25);
		getContentPane().add(cancelar);
	}
	
	// M�todo para cambiar el combobox y poner puesto, parentesco o carn� dependiendo de lo escogido
	private void cambiarcombobox () { 
		if (comboBox.getSelectedIndex() == 0) {
			panel.setVisible(true);
			panel_1.setVisible(false);
			panel_2.setVisible(false);
		}
		if (comboBox.getSelectedIndex() == 1) {
			panel.setVisible(false);
			panel_1.setVisible(true);
			panel_2.setVisible(false);
		}
		if (comboBox.getSelectedIndex() == 2) {
			panel_3.setVisible(true);
			panel.setVisible(false);
			panel_1.setVisible(false);
			panel_2.setVisible(true);
			
		}
		}
	
}
